QTMTB 48 - SetMovieDefaultDataRef ÇΔÇÕ

(çXêVì˙: 97 îN 3 åé 14 ì˙)

Q: SetMovieDefaultDataRef ä÷êîÇÃÉ}ÉjÉÖÉAÉãÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBDZÇÃä÷êîÇÃì≠Ç´ÇΔégÇ¢ï˚Çã≥ǶǃÇ≠ÇæÇ≥Ç¢ÅB

A: SetMovieDefaultDataRef ÇÕÅAMovies.h ÇÃíÜÇ≈éüÇÃÇÊǧDžíËã`Ç≥ÇÍǃǢNjÇ∑ÅB

pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSTypedataRefType);
DZÇÃä÷êîÇégópÇ∑ÇÈÇΔÅAÉfÅ[É^ÇÉÄÅ[ÉrÅ[Ç…í«â¡Ç∑ÇÈÇΔÇ´ÅAǪÇÃÉfÅ[É^Ç™èëÇ´çûÇ‹ÇÍÇÈèÍèäÇêßå‰Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇΩÇΔǶnjÅAÉÄÅ[ÉrÅ[ÇÉtÉ@ÉCÉãÇ©ÇÁÉçÅ[ÉhǵÇΩèÍçáÅAÉfÉtÉHÉãÉgÇÃÉfÅ[É^éQèΔÇÕÉÄÅ[ÉrÅ[ÇÉçÅ[ÉhǵÇΩÉtÉ@ÉCÉãÇ…èâä˙âªÇ≥ÇÍÇ‹Ç∑ÅBéüÇÃÉTÉìÉvÉãÉvÉçÉOÉâÉÄÇ≈ÇÕÅAÉfÉtÉHÉãÉgÇÃÉfÅ[É^éQèΔÇ™ÉÅÉÇÉäì‡ÇÃÉnÉìÉhÉãÇ…ê›íËÇ≥ÇÍÇ‹Ç∑ÅB
     OSErr ConvertGeneralMIDIToSoundTrack (void)
     {
          OSErr                              err = noErr;
          StandardFileReply                  reply;
          short                              refNum;
          long                                logicalEOF;
          Handle                             dataHandle = nil, tempHandle = nil;
          Movie                              theMovie = nil, tempMovie = nil;

          // ÉCÉìÉ|Å[ÉgÇÃëŒè€ÇΔǵǃ General MIDI ÉtÉ@ÉCÉãÇéwíËÇ∑ÇÈ
          StandardGetFilePreview (nil, 0, nil, &reply);
          if (reply.sfGood)
          {
               // ÉfÅ[É^ÉtÉHÅ[ÉNÇäJÇ´ÅAÇ∑Ç◊ǃÇÃÉfÅ[É^ÇÉnÉìÉhÉãÇÃíÜÇ…ãzÇ¢è„Ç∞ÇÈ
               err = FSpOpenDF (&reply.sfFile, fsRdPerm, &refNum);
               err = GetEOF (refNum, &logicalEOF);
               dataHandle = NewHandleClear (logicalEOF);
               HLock (dataHandle);
               err = FSRead (refNum, &logicalEOF, *dataHandle);
               HUnlock (dataHandle);
               FSClose (refNum);

               // ÉÅÉÇÉäì‡Ç…êVǵǢÉÄÅ[ÉrÅ[ÇçÏê¨ÇµÅAǪÇÃÉfÉtÉHÉãÉgÇÃÉfÅ[É^éQèΔÇ
               // ÉnÉìÉhÉãÇ…ê›íËÇ∑ÇÈ
               tempMovie = NewMovie (newMovieActive);
               tempHandle = NewHandleClear (4);
               SetMovieDefaultDataRef (tempMovie, tempHandle,
                    HandleDataHandlerSubType);
               DisposeHandle (tempHandle);

               // ÉnÉìÉhÉãÇ…äiî[Ç≥ÇÍÇΩÉfÅ[É^ÇÉÄÅ[ÉrÅ[Ç…ÉyÅ[ÉXÉgÇ∑ÇÈ
               err = PasteHandleIntoMovie (dataHandle, 'Midi', tempMovie, 0, nil);

               // ÉÄÅ[ÉrÅ[ÇÉtÉâÉbÉgâªÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇ…ï€ë∂Ç∑ÇÈ
               StandardPutFile ("\pSave MIDI to:", "\pMIDI movie", &reply);
               if (reply.sfGood)
               {
                    theMovie = FlattenMovieData (tempMovie,
                         flattenAddMovieToDataFork, &reply.sfFile, 'TVOD',
                         smCurrentScript, createMovieFileDeleteCurFile);
               }
          }
          return err;
     }
DZÇÃï˚ñ@ÇÕÅAégópâ¬î\Ç»ÉÅÉÇÉäÇ™è\ï™Ç…džÇËÅAÉÄÅ[ÉrÅ[ÇÉfÉBÉXÉNÇ…ï€ë∂ǵÇÊǧÇΔǵǻǢǩǨÇËê≥èÌÇ…ìÆçÏǵNjÇ∑ÅBÉfÅ[É^ÇÉtÉ@ÉCÉãÇ…èëÇ´çûÇfiÇ…ÇÕÅADZÇÃä÷êîÇåƒÇ—èoǵǃÅAÉfÅ[É^éQèΔÇΔǵǃñ⁄ìIÇÃÉtÉ@ÉCÉãÇ…ëŒÇ∑ÇÈÉGÉCÉäÉAÉXÇìnǵÅAÉfÅ[É^éQèΔÇÃå^ÇΔǵǃ rAliasType ÇìnǵNjÇ∑ÅB
SetMovieDefaultDataRef (tempMovie, fileAlias, rAliasType);



--Mike Bitz
devsupport@apple.com

[ Technical Q&A's : Graphics & Media : QuickTime : QuickTime Movie Toolbox : QTMTB 48 ]